package com.heima.freemarker;

import com.heima.freemarker.pojo.Student;
import freemarker.template.Configuration;
import freemarker.template.Template;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.FileWriter;
import java.util.*;

@SpringBootTest(classes = FreemarkerApplication.class)
@RunWith(SpringRunner.class)
public class FreemarkerTest2 {

    @Autowired
    private Configuration configuration;

    /**
     * 根据模板生成一个html文件
     */
    @Test
    public void test() throws Exception {
        /**
         * 创建模板对象，并指定模板文件
         */
        Template template = configuration.getTemplate("list.ftl");

        /**
         * 合成  根据模板文件和模型数据生成文件
         * 第一个参数：模型数据
         * 第二个参数：输出流  把文件保存在什么位置
         */
        template.process(getData(),new FileWriter("E:\\tmp\\list.html"));
    }

    private Map<String, Object> getData() {
        Map<String, Object> map = new HashMap<>();

        //小强对象模型数据
        Student stu1 = new Student();
        stu1.setName("小强");
        stu1.setAge(18);
        stu1.setMoney(1000.86f);

        //小红对象模型数据
        Student stu2 = new Student();
        stu2.setName("小红");
        stu2.setMoney(200.1f);
        stu2.setAge(19);

        //将两个对象模型数据存放到List集合中
        List<Student> stus = new ArrayList<>();
        stus.add(stu1);
        stus.add(stu2);

        //向map中存放List集合数据
        map.put("stus", stus);


        //创建Map数据
        HashMap<String, Student> stuMap = new HashMap<>();
        stuMap.put("stu1", stu1);
        stuMap.put("stu2", stu2);
        //向map中存放Map数据
        map.put("stuMap", stuMap);

        //添加日期数据
        map.put("today",new Date());

        //返回Map
        return map;
    }
}
